分享人:甘乐
一.背景介绍
二.知识剖析
三.常见问题
四.解决方案
五.编码实战
六.扩展思考
七.参考文献
八.更多讨论
HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所用的协议方案. HTTP有很多应用,但最著名的是用于Web客户端和Web服务器之间的双工通信.因此HTTP被称为互联网的多媒体信使. (HTTP/2,当前版本,于2015年5月作为互联网标准正式发布)
We服务器是Web资源(Web resources)的宿主,Web资源是Web内容的源头.Web服务器会为所有 的HTTP对象数据附加一个MIME type(Mutipurpose Internet Mail Extension),表示一种主要的对象类型和一个特定的子类型. 如:text/html, text/plain, image/jpeg.
每个Web服务器资源都有一个名字,即URI(Uniform Resource Identifier),在世界范围内唯一标识并定位该资源.
一个HTTP事务(transaction)由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成.这种通信是通过 HTTP报文(HTTP message)的格式化数据块进行的.这些报文在客户端,服务器和代理之间流动.
HTTP支持几种不同的请求命令,称之为HTPP方法(HTTP method).每条HTTP请求报文都包含一个方法,告诉服务器执行什么动作. (GET,PUT,DELETE,POST,HEAD).
每条HTTP响应报文返回时都会携带一个三位数的状态码,告知客户端请求是否成功或者需要采取其他动作.
1.HTTP请求和响应报文的结构
HTTP报文是由一行行的简单字符串组成,不是二进制代码,便于开发者读写.从Web客户端发往Web服务器端的HTTP报文称为请求报文 (request message),从服务器端发往客户端的报文称为响应报文(response message).
HTTP报文包括以下三部分:
2.连接
HTTP是应用层协议,无需关心网络通信的具体细节,它把联网的细节交给了通用的.可靠的因特网传输协议TCP/IP协议.TCP/IP是全世界的计算机 和网络设备的常用的层次化分组交换网络协议,隐藏了各种网络和硬件的特点及弱点,使各种类型的计算机和网络都能够进行可靠的通信.
只要建立了TCP连接,客户端和服务器之间的报文交换就不会丢失,破坏或者在接收时出现错序.
基本的浏览器连接处理:
3.首部 (header)
HTTP首部可以分为以下几类:
(1)通用首部:即可以出现在请求报文中也可以出现在响应报文中
HTTP/1.0引入了第一个允许HTTP应用程序缓存对象本地副本的首部,这样就不需要总是从源端服务器获取了.
(2)请求首部:只在请求报文中有意义的首部,提供更多有关请求的信息
请求的信息性首部
1)Accept首部
Accept首部为客户端提供了一种将其喜好和能力告知服务器的方式,包括它们想要什么, 可以使用什么,以及最重要的,它们不想要的.Accept, Accept-Charset, Accept-ncoding, Accept-Language,TE
2)条件请求首部
通过条件请求首部,客户端为请求加上限制,要求服务器在对请求进行响应之前,确保某个条件为真. Expect,If-Match,If-Nodified-Since, If-None-Match, If-Range, If-Unmodified-Since,Range.
3)安全请求首部
HTTP本身支持一种简单的机制,可以对请求进行质询/响应.Authorization,Cookie,Cookie2
4)代理请求首部
Max-Forward,Proxy-Authorization,Proxy_Connection
(3)响应首部:提供更多有关响应的信息
请求的信息性首部
1)协商首部
如果资源有多种表示方法,比如服务器上有某文档的法语和德语译稿,HTTP/1.1可以为服务器和客户端提供 对资源进行协商的能力.Accept-Ranges,Vary.
2)安全协商首部
HTTP的质询/响应认证机制的响应侧.Proxy-Authenticate,Set-Cookie,Set-Cookie2,WWW-Authenticate
(4)实体首部:描述实体的长度和内容或者资源本身,两种类型的报文中都可能出现实体首部.
请求的信息性首部
1)内容首部
提供了与实体内容有关的特定信息,说明了其类型,尺寸以及处理它所需的其他有用信息. Context-Base, Context-Encoding, Context-Language, Context-Length, Context-Location, Context-MDS, Context-Range, Context-Type
2)实体缓存首部
通用的缓存首部说明了如何或者什么时候进行缓存.实体的缓存首部提供了与被缓存实体有关的信息.ETag,Expires,Last-Modified.
HTTPS是什么,它与HHTP有什么联系与区别?
HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
与HTTP的差异:与HTTP的URL由“http://”起始且默认使用端口80不同,HTTPS的URL由“https://”起始且默认使用端口443。
在HTTP中,客户端首先打开一条到Web服务器端口443的连接.一旦建立了TCP连接,客户端和服务器就会初始化SSL层,对加密参数进行沟通,并交换密钥.握手完成之后,SSL初始化就完成了.
Chrome 开发者工具查看HTTP报文.
常见状态码含义:
虽然 RFC 2616 中已经推荐了描述状态的短语,例如"200 OK","404 Not Found", 但是WEB开发者仍然能够自行决定采用何种短语,用以显示本地化的状态描述或者自定义信息。
今天的分享就到这里,感谢诸君围观!